package KuangShen.ZhuJieHeFanShe;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

/*
自定义注解
使用@interface自定义注解时，自动继承了java.lang.annotation.Annotation接口
@interface 用来声明一个注解
格式：public @interface 注解名{定义内容}
其中的每一个方法实际上不是方法，实际上是声明了一个配置参数
方法名称就是参数的名称
返回值类型就是参数的类型
可以通过default来声明参数的默认值
如果只有一个参数成员，一般命名为value
注解元素必须有值，我们在定义注释元素时，经常使用空字符串、0作为默认值
 */

//使用自定义注解
public class test03 {
    @MyAnootation2(name = "照垣",schools = "太原学院")
    public void test(){
    }
    @MyAnootation3("只有一个参数可以省略参数名输入")
    public void test2(){

    }
}

//创建自定义注解
@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnootation2{
    String name(); //注解的参数 ：参数类型+参数名（）;
    String sex() default "男"; // default "默认值" 给参数默认值
    int age() default 0;
    int id() default -1;//默认值为-1表示不存在
    String[]  schools() default {"西北大学","清华大学"};
}

//创建自定义注解
@Target({ElementType.TYPE,ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
@interface MyAnootation3{
    String value();
}